using System.Linq;
using System.Runtime.InteropServices;

namespace EOSDigital.SDK
{
	public struct FocusInfo
	{
		public Rectangle ImageRectangle;

		public int PointNumber;

		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
		public FocusPoint[] FocusPoints;

		public int ExecuteMode;

		public static bool operator ==(FocusInfo x, FocusInfo y)
		{
			if (x.ImageRectangle == y.ImageRectangle && x.PointNumber == y.PointNumber && x.FocusPoints.SequenceEqual(y.FocusPoints))
			{
				return x.ExecuteMode == y.ExecuteMode;
			}
			return false;
		}

		public static bool operator !=(FocusInfo x, FocusInfo y)
		{
			return !(x == y);
		}

		public override bool Equals(object obj)
		{
			if (obj is FocusInfo)
			{
				return this == (FocusInfo)obj;
			}
			return false;
		}

		public override int GetHashCode()
		{
			int num = -2128831035;
			num *= (0x1000193 ^ this.ImageRectangle.GetHashCode());
			num *= (0x1000193 ^ this.PointNumber.GetHashCode());
			num *= (0x1000193 ^ this.FocusPoints.GetHashCode());
			return num * (0x1000193 ^ this.ExecuteMode.GetHashCode());
		}
	}
}
